"""
比较运算符
学习目标：
1. 掌握所有比较运算符的使用
2. 理解比较运算返回布尔值
3. 学会比较运算在条件判断中的应用
"""

# ==================== 1. 基本比较运算符 ====================
print("=" * 50)
print("1. 基本比较运算符")
print("=" * 50)

a = 10
b = 20

# 等于 ==
print(f"{a} == {b} 结果：{a == b}")

# 不等于 !=
print(f"{a} != {b} 结果：{a != b}")

# 大于 >
print(f"{a} > {b} 结果：{a > b}")

# 小于 <
print(f"{a} < {b} 结果：{a < b}")

# 大于等于 >=
print(f"{a} >= {b} 结果：{a >= b}")

# 小于等于 <=
print(f"{a} <= {b} 结果：{a <= b}")

print("\n💡 比较运算符返回的是布尔值：True 或 False")

print()

# ==================== 2. 比较运算的数据类型 ====================
print("=" * 50)
print("2. 不同数据类型的比较")
print("=" * 50)

# 整数比较
print("【整数比较】")
print(f"10 > 5: {10 > 5}")
print(f"10 < 5: {10 < 5}")

# 浮点数比较
print("\n【浮点数比较】")
print(f"3.14 > 3: {3.14 > 3}")
print(f"3.14 == 3.14: {3.14 == 3.14}")

# 整数和浮点数比较
print("\n【整数和浮点数比较】")
print(f"10 == 10.0: {10 == 10.0}")  # True，值相等
print(f"10 > 9.9: {10 > 9.9}")

# 字符串比较（按字典序/ASCII码）
print("\n【字符串比较】")
print(f"'abc' < 'abd': {'abc' < 'abd'}")
print(f"'apple' > 'app': {'apple' > 'app'}")
print(f"'A' < 'a': {'A' < 'a'}")  # 大写字母的ASCII码小于小写字母

# 字符串相等比较
print(f"'hello' == 'hello': {'hello' == 'hello'}")
print(f"'hello' == 'Hello': {'hello' == 'Hello'}")  # 区分大小写

print()

# ==================== 3. 链式比较 ====================
print("=" * 50)
print("3. 链式比较（Python特性）")
print("=" * 50)

x = 15

# 传统写法
result = 10 < x and x < 20
print(f"10 < {x} and {x} < 20: {result}")

# Python链式比较（更优雅）
result = 10 < x < 20
print(f"10 < {x} < 20: {result}")

# 更多链式比较示例
a, b, c = 5, 10, 15
print(f"\na={a}, b={b}, c={c}")
print(f"a < b < c: {a < b < c}")  # True
print(f"a < b > 3: {a < b > 3}")  # True
print(f"a == 5 == c: {a == 5 == c}")  # False

print()

# ==================== 4. 实战：成绩评定 ====================
print("=" * 50)
print("4. 实战：成绩评定系统")
print("=" * 50)

score = 85

print(f"学生成绩：{score}分")
print()

# 成绩等级判定
if score >= 90:
    grade = "优秀"
elif score >= 80:
    grade = "良好"
elif score >= 70:
    grade = "中等"
elif score >= 60:
    grade = "及格"
else:
    grade = "不及格"

print(f"成绩等级：{grade}")
print()

# 各种条件判断
print("判断结果：")
print(f"是否及格（>=60）：{score >= 60}")
print(f"是否良好（>=80）：{score >= 80}")
print(f"是否优秀（>=90）：{score >= 90}")
print(f"是否满分（==100）：{score == 100}")
print(f"是否不及格（<60）：{score < 60}")

print()

# ==================== 5. 实战：年龄判断 ====================
print("=" * 50)
print("5. 实战：年龄分类")
print("=" * 50)

age = 25

print(f"年龄：{age}岁")
print()

# 年龄分类
if age < 0:
    category = "年龄无效"
elif age <= 2:
    category = "婴儿"
elif age <= 6:
    category = "幼儿"
elif age <= 12:
    category = "儿童"
elif age <= 18:
    category = "青少年"
elif age <= 35:
    category = "青年"
elif age <= 60:
    category = "中年"
else:
    category = "老年"

print(f"年龄分类：{category}")
print()

# 权限判断
print("权限判断：")
print(f"是否成年（>=18）：{age >= 18}")
print(f"是否未成年（<18）：{age < 18}")
print(f"是否可以退休（>=60）：{age >= 60}")
print(f"是否在工作年龄（18-60）：{18 <= age <= 60}")

print()

# ==================== 6. 实战：价格比较 ====================
print("=" * 50)
print("6. 实战：购物价格比较")
print("=" * 50)

product_name = "Python编程书"
original_price = 99
discount_price = 69
threshold = 50  # 免邮费门槛

print(f"商品：{product_name}")
print(f"原价：¥{original_price}")
print(f"折扣价：¥{discount_price}")
print(f"免邮门槛：¥{threshold}")
print()

# 价格判断
print("价格分析：")
print(f"是否打折（折扣价<原价）：{discount_price < original_price}")
print(f"折扣力度：{(original_price - discount_price) / original_price * 100:.1f}%")
print(f"是否免邮（>=门槛）：{discount_price >= threshold}")
print(f"是否超过100元：{discount_price > 100}")

# 是否值得购买
if discount_price < original_price * 0.7:  # 7折以下
    print("💰 折扣力度大，值得购买！")
elif discount_price < original_price * 0.85:  # 8.5折以下
    print("😊 有一定优惠，可以考虑")
else:
    print("🤔 优惠不大，可以再等等")

print()

# ==================== 7. 实战：日期时间比较 ====================
print("=" * 50)
print("7. 实战：日期时间判断")
print("=" * 50)

# 月份判断
month = 3

print(f"当前月份：{month}月")
print()

# 季节判断
if 3 <= month <= 5:
    season = "春季"
elif 6 <= month <= 8:
    season = "夏季"
elif 9 <= month <= 11:
    season = "秋季"
else:  # 12, 1, 2
    season = "冬季"

print(f"季节：{season}")
print()

# 月份特征判断
print("月份特征：")
print(f"是否第一季度（1-3月）：{1 <= month <= 3}")
print(f"是否上半年（<=6月）：{month <= 6}")
print(f"是否年中（6-7月）：{6 <= month <= 7}")
print(f"是否年末（>=11月）：{month >= 11}")

# 天数判断
if month in [1, 3, 5, 7, 8, 10, 12]:
    days = 31
elif month == 2:
    days = 28  # 简化，不考虑闰年
else:
    days = 30

print(f"本月天数：{days}天")

print()

# ==================== 8. 实战：会员等级系统 ====================
print("=" * 50)
print("8. 实战：会员等级系统")
print("=" * 50)

username = "张三"
points = 1500  # 积分
purchase_amount = 5000  # 消费金额

print(f"会员：{username}")
print(f"积分：{points}")
print(f"累计消费：¥{purchase_amount}")
print()

# 等级判定
if points >= 5000:
    level = "钻石会员"
    discount = 0.7  # 7折
elif points >= 2000:
    level = "黄金会员"
    discount = 0.8
elif points >= 500:
    level = "白银会员"
    discount = 0.9
else:
    level = "普通会员"
    discount = 1.0

print(f"会员等级：{level}")
print(f"享受折扣：{discount * 10}折")
print()

# 权益判断
print("会员权益：")
print(f"是否可以享受折扣（积分>=500）：{points >= 500}")
print(f"是否高级会员（积分>=2000）：{points >= 2000}")
print(f"距离下一等级还需积分：", end="")

if points < 500:
    print(f"{500 - points}分（升级到白银）")
elif points < 2000:
    print(f"{2000 - points}分（升级到黄金）")
elif points < 5000:
    print(f"{5000 - points}分（升级到钻石）")
else:
    print("已是最高等级")

print()

# ==================== 9. 实战：考试通过条件 ====================
print("=" * 50)
print("9. 实战：多科目考试判定")
print("=" * 50)

math = 75
english = 88
chinese = 92

print(f"数学：{math}分")
print(f"英语：{english}分")
print(f"语文：{chinese}分")
print()

# 单科判断
print("单科情况：")
print(f"数学是否及格（>=60）：{math >= 60}")
print(f"英语是否优秀（>=90）：{english >= 90}")
print(f"语文是否优秀（>=90）：{chinese >= 90}")
print()

# 总体判断
total = math + english + chinese
average = total / 3

print(f"总分：{total}")
print(f"平均分：{average:.2f}")
print()

print("综合判断：")
print(f"所有科目及格：{math >= 60 and english >= 60 and chinese >= 60}")
print(f"平均分良好（>=80）：{average >= 80}")
print(f"平均分优秀（>=90）：{average >= 90}")
print(f"有科目不及格：{math < 60 or english < 60 or chinese < 60}")
print(f"至少一门优秀（>=90）：{math >= 90 or english >= 90 or chinese >= 90}")

print()

# ==================== 总结 ====================
print("=" * 50)
print("✨ 比较运算符总结")
print("=" * 50)
print("""
1. == : 等于（注意是两个等号）
2. != : 不等于
3. >  : 大于
4. <  : 小于
5. >= : 大于等于
6. <= : 小于等于

💡 重要特性：
- 比较运算符返回布尔值（True 或 False）
- 可以比较数字、字符串等多种类型
- Python支持链式比较：a < b < c
- 字符串比较按字典序（ASCII码）
- 常用于条件判断（if语句）

⚠️ 注意事项：
- 赋值用 = ，比较用 ==
- 字符串比较区分大小写
- 浮点数比较要注意精度问题
""")
print("=" * 50)

